Bonjour à tous,
Après un moment à me battre avec mon Exchange pour faire de la double authentification j’ai fini par me rabattre sur NGINX.
Les solutions à la DUO et tout sont bien compliquées et elles dépendent toutes d’une tierce partie, ce qui est gênant pour faire quelque chose de basique.
On va donc utiliser l’authentification par certificat TLS client avant de laisser les gens (moi en l’occurrence) arriver sur l’OWA.
Dans l’idée, on va créer sa propre autorité de certification et générer un certificat auto-signé valide pour nos appareils afin de nous authentifier avec le reverse proxy nginx et d’autoriser la connexion à l’Exchange qui se trouve derrière.
Je me suis basé sur la mini procédure disponible ici : https://gist.github.com/mtigas/952344
On va d’abord créer un répertoire avec le NGINX pour garder toutes les clés :
mkdir /etc/nginx/private
cd /etc/nginx/private
On commence par créer la clé privée de notre propre autorité de certification :
openssl ecparam -genkey -name secp384r1 | openssl ec -out ca.key
Maintenant on va créer le certificat root de l’organisation :
openssl req -new -x509 -days 3650 -key ca.key -out ca.pem
On va maintenant créer la clé privée pour nous (le premier client) :
openssl ecparam -genkey -name secp384r1 | openssl ec -out client-remote.key
Créez une demande de certificat, attention, ne renseignez pas la même organisation ni le même CN que sur le premier certificat sinon cela ne marchera pas :
openssl req -new -key client-remote.key -out client-remote.csr
Signez la demande avec notre nouvelle autorité de certification, le serial des certificats sera à incrémenter pour chaque nouveau certificat :
openssl x509 -req -days 3650 -in client-remote.csr -CA ca.pem -CAkey ca.key -set_serial 001 -out client-remote.pem
Créez maintenant un PFX final avec un mot de passe que vous allez pouvoir exporter sur vos appareils.
openssl pkcs12 -export -out client-remote.full.pfx -inkey client-remote.key -in client-remote.pem -certfile ca.pem
Maintenant, gardez précieusement le fichier client-remote.full.pfx
Ouvrez le fichier de configuration de votre site et ajoutez ceci dans le bloc server de votre vhost.
ssl_client_certificate /etc/nginx/private/ca.pem;
ssl_verify_client on;
Redémarrez maintenant votre serveur Nginx.
Allez dans les options de Firefox, « vie privée et sécurité -> Voir les certificats » :
Maintenant, cliquez sur « Importer » et allez chercher votre fichier .pfx. Votre mot de passe sera nécessaire.
Maintenant, visitez votre site, vous recevrez une demande de confirmation du certificat :
Et normalement, si vous n’avez pas le certificat, vous verrez ce genre de message :
Voici ma double authentification pas chère pour Exchange, si vous avez mieux 🙂